#!/usr/bin/env python3
"""
铺先生商业地产信息爬虫系统主程序
Puxiansheng Commercial Real Estate Scraper Main Program
"""

import argparse
import sys
import os

# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from puxiansheng_scraper.config_manager import ConfigManager


def main():
    """主程序入口"""
    parser = argparse.ArgumentParser(
        description="铺先生商业地产信息爬虫系统",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
示例用法:
  python main.py                           # 使用默认配置运行
  python main.py --config config.yaml     # 指定配置文件
  python main.py --cities sz,gz           # 指定城市
  python main.py --types catering,retail  # 指定业态类型
        """
    )
    
    parser.add_argument(
        '--config', '-c',
        default='config.yaml',
        help='配置文件路径 (默认: config.yaml)'
    )
    
    parser.add_argument(
        '--cities',
        help='要抓取的城市列表，用逗号分隔 (例如: sz,gz,bj)'
    )
    
    parser.add_argument(
        '--types',
        help='要抓取的业态类型，用逗号分隔 (例如: catering,entertainment,retail)'
    )
    
    parser.add_argument(
        '--output-dir',
        help='输出目录路径'
    )
    
    parser.add_argument(
        '--format',
        choices=['json', 'csv'],
        help='输出格式'
    )
    
    parser.add_argument(
        '--verbose', '-v',
        action='store_true',
        help='详细输出模式'
    )
    
    args = parser.parse_args()
    
    # 初始化配置管理器
    try:
        config_manager = ConfigManager(args.config)
        print(f"配置文件加载成功: {args.config}")
    except Exception as e:
        print(f"错误: 无法加载配置文件 {args.config}: {e}")
        return 1
    
    # 命令行参数覆盖配置文件设置
    if args.cities:
        cities = [city.strip() for city in args.cities.split(',')]
        config_manager.config['scraper']['cities'] = cities
    
    if args.types:
        types = [t.strip() for t in args.types.split(',')]
        config_manager.config['scraper']['business_types'] = types
    
    if args.output_dir:
        config_manager.config['storage']['output_dir'] = args.output_dir
    
    if args.format:
        config_manager.config['storage']['format'] = args.format
    
    if args.verbose:
        config_manager.config['logging']['level'] = 'DEBUG'
    
    # 显示配置信息
    print("\n=== 爬虫配置信息 ===")
    print(f"城市: {config_manager.get('scraper.cities')}")
    print(f"业态: {config_manager.get('scraper.business_types')}")
    print(f"输出目录: {config_manager.get('storage.output_dir')}")
    print(f"输出格式: {config_manager.get('storage.format')}")
    print(f"日志级别: {config_manager.get('logging.level')}")
    print("==================\n")
    
    # TODO: 在后续任务中实现爬虫控制器
    print("项目基础结构已搭建完成！")
    print("请继续实现后续模块...")
    
    return 0


if __name__ == '__main__':
    sys.exit(main())